using UltraLight.MVVM.Contracts;

namespace UltraLight
{
    /// <summary>
    ///     Contract for the main view model - use this for easy design-time
    /// </summary>
    public interface IMainBase
    {
        /// <summary>
        ///     Sample text
        /// </summary>
        string Text { get; }

        /// <summary>
        ///     Send an event/message
        /// </summary>
        IActionCommand<object> EventCommand { get; }

        /// <summary>
        ///     Change the state
        /// </summary>
        IActionCommand<object> StateCommand { get; }

        /// <summary>
        ///     Pop up the dialog 
        /// </summary>
        IActionCommand<object> DialogCommand { get; }

        /// <summary>
        ///     Navigate
        /// </summary>
        IActionCommand<object> NavigateCommand { get; }
    }

    /// <summary>
    ///     Now extend with the view model contract for run-time
    /// </summary>
    public interface IMainViewModel : IMainBase, IViewModel
    {
        
    }
}